var Config = require("../config");
var KOC = require("koc.common.utils");
var crypto = require("crypto");

module.exports = {
    AuditText: function (Value, callback) {
        Value = KOC.Lodash.extend({
            Anchor_ID: null,
            Live_ID: null,
            User_ID: null,
            User_NickName: null,
            User_Level: null,
            Message_Type: null, //消息类型（0 用户消息、1 系统消息、2 发送礼物、3 图片、 4 转发、5 关注、6 红包、7 私信）
            Message_Content: null, //*消息内容(必填)
            Create_Date: null,
            Create_IP: null
        }, typeof Value === "string" ? {Message_Content: Value} : Value);
        if (!Value.Message_Content) {
            callback(KOC.ReturnValue.New());
            return;
        }
        if (!Value.Anchor_ID) {
            Value.Anchor_ID = KOC.Uuid.v4();
        }
        if (!Value.Live_ID) {
            Value.Live_ID = Value.Anchor_ID;
        }
        if (!Value.User_ID) {
            Value.User_ID = KOC.Uuid.v4();
        }
        Value.Message_Type = KOC.StringUtils.ToInt(Value.Message_Type);
        if (Value.Create_Date) {
            Value.Create_Date = KOC.Moment().format("YYYY-MM-DD HH:mm:ss");
        }
        if (!Value.Create_IP) {
            Value.Create_IP = "255.255.255.255";
        }
        var options = {
            app_id: Config.Interface.YunClean.APPID,
            version: "1.0",
            timestamp: KOC.Moment().format("YYYY-MM-DD HH:mm:ss"),
            json_data: JSON.stringify({
                anchor_id: Value.Anchor_ID,
                live_id: Value.Live_ID,
                msg_time: Value.Create_Date,
                ip_address: Value.Create_IP,
                user_id: Value.User_ID,
                message_type: Value.Message_Type,
                msg_content: Value.Message_Content,
                nick_name: Value.User_NickName,
                star_level: Value.User_Level
            })
        };
        options.sign = crypto.createHmac("sha1", Config.Interface.YunClean.SHA_KEY).update(options.app_id + "," + options.timestamp).digest().toString("base64");
        KOC.Request.post({
            uri: "http://api.yunclean.cn:9999/audit-live",
            json: true,
            form: options
        }, function (error, response, result) {
            if (error) {
                callback(KOC.ReturnValue.New({
                    hasError: true,
                    message: error.message
                }));
                return;
            }
            if (!result || !result.json) {
                callback(KOC.ReturnValue.New({
                    hasError: true,
                    message: '返回信息出错',
                    returnObject: result
                }));
                return;
            }
            result = result.json;
            //错误：
            // 1001 - 调用正常：结果为通过。
            // 1002 - 调用正常，结果为禁止。
            // 1003 - 调用正常，需要人工审核。
            // 1004 - 图片审核：结果为处理中。
            // 4000 - 调用失败：客户端参数错误。
            // 4001 - 调用失败：客户端数据包错误。
            // 4005 - 调用失败：appId校验失败
            // 5000 - 调用失败：服务端异常
            //正常：
            // 1001-操作正常，结果为通过。
            // 1002-调用正常，结果为拦截。
            // 1003-调用正常，人工审核。
            callback(KOC.ReturnValue.New({
                hasError: !KOC.Lodash.includes([1001, "1001", 1004, "1004"], result.code),
                returnObject: result.code,
                message: result.msg
            }));
        });
    }
};